<?php

/**
 * グローバルナビ地図用Utilクラス
 */
class Apm_Util_GlobalNavi_Chizu {

	private $searchType = null;
	private $prefCdList = null;
	private $cityCdList = null;
	private $params = null;
	
	function __construct()
	{
		$this->params = array();
		
		$this->searchType = Apm_Session_GlobalNavi::getSearchType();
		$this->prefCdList = Apm_Session_GlobalNavi::getPrefCdList();
		$this->cityCdList = Apm_Session_GlobalNavi::getCityCdList();
		$this->basicList = Apm_Session_GlobalNavi::getBasicList();
		
		// 検索区分を設定
		Apm_Session_GlobalNavi::setSearchType(Apm_Config_Search::SRHKBN_CHIZU);
	}
	
	/**
	 * 画面遷移判定
	 */
	public function transitionJudge()
	{
		//基本項目をパラメータにセット
		$this->params = Apm_Util_GlobalNavi_Common::setBasicParams($this->basicList);
		//その他パラメータをセット
		$this->params['SrhKbn'] = Apm_Config_Search::SRHKBN_CHIZU;
		
		// 住所検索から遷移してきた場合
		if ($this->searchType == Apm_Config_Search::SRHKBN_JYUSYO)
		{
			// 都道府県判定 
//        	$this->prefJudge();
			if (!$this->prefJudge()) {
				return $this->params;
			}
        	// 市区町村判定
//        	$this->cityJudge();
			if(!$this->cityJudge()) {
				return $this->params;
			}
        	// 地図用一覧へリダイレクト
//			Apm_Util::redirect(Apm_Config_Search::URL_SELECT_CHIZU, $this->params);

			$this->_getXY();

			return $this->params;
		}
		// 沿線・駅検索 OR 路線図検索から遷移してきた場合
		elseif ($this->searchType == Apm_Config_Search::SRHKBN_ENSENEKI || $this->searchType == Apm_Config_Search::SRHKBN_ROSENZU)
		{
			// 都道府県判定 
//        	$this->prefJudge();
			if (!$this->prefJudge()) {
				return $this->params;
			}
        	// 地図市区町村選択画面へリダイレクト
//			Apm_Util::redirect(Apm_Config_Search::URL_SELECT_CHIZU, $this->params);
			return $this->params;
		}
		// 店舗検索から遷移してきた場合
		elseif ($this->searchType == Apm_Config_Search::SRHKBN_TENPO)
		{
			// 都道府県判定 
//        	$this->prefJudge();
			if (!$this->prefJudge()) {
				return $this->params;
			}
        	// 市区町村判定
//        	$this->cityJudge();
			if(!$this->cityJudge()) {
				return $this->params;
			}
        	// 地図一覧画面へリダイレクト
//			Apm_Util::redirect(Apm_Config_Search::URL_SELECT_CHIZU, $this->params);
			$this->_getXY();
			return $this->params;
		}
		else
		{
			// 地図検索から遷移した場合、セッションクリア
			Apm_Session_GlobalNavi::clear();
//			Apm_Util::redirect(Apm_Config_Search::URL_SELECT_CHIZU, $this->params);
			$this->params = array();
			return $this->params;
		}

	}
	
	/**
	 * 都道府県判定
	 */
	private function prefJudge()
	{
		// 都道府県コードが選択されていない場合,または1つ以上選択した場合
		if (count($this->prefCdList) == 0 || count($this->prefCdList) > 1)
        {
        	// 都道府県選択画面へリダイレクト
//        	Apm_Util::redirect(Apm_Config_Search::URL_SELECT_CHIZU, $this->params);
			$this->params = array();
			return false;
        }
        $this->params['PrefCd'] = $this->prefCdList;
		$this->params['prefcd_condition'] = Apm_Session_GlobalNavi::getPrefCdCondition();
		$this->params['first_check'] = Apm_Session_GlobalNavi::getFirstCheck();

		return true;
	}
	/**
	 * 市区町村判定
	 */
	private function cityJudge()
	{
        // 市区町村コードが選択されていない場合,または1つ以上選択した場合
        if (count($this->cityCdList) == 0 || count($this->cityCdList) > 1)
        {
        	// 地図市区町村選択画面へリダイレクト
//        	Apm_Util::redirect(Apm_Config_Search::URL_SELECT_CHIZU, $this->params);
			$this->params['CityCd'] = array();
			return false;
        }
        $this->params['CityCd'] = $this->cityCdList;

		return true;
	}

	/**
	 * 市区町村コードから緯度、経度を取得
	 */
	private function _getXY()
	{
		$this->_model = new Search_Model_Selchizutodofuken();
		$ret = $this->_model->getSikucyosonData($this->params);
		$x = '';
		$y = '';
		foreach ($ret as $key => $val) {
			if (0 == strcmp($this->params['CityCd'][0], $val['M84_TODOUFUKEN_CD'].$val['M84_SHIKUCHOUSON_CD'])){
				$y = number_format($val['M84_IDO']/3600,6);
				$x = number_format($val['M84_KEIDO']/3600,6);
				break;
			}
		}
		$this->params['x'] = $x;
		$this->params['y'] = $y;
	}
}
?>
